<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:composite="http://java.sun.com/jsf/composite">

    <h:head>
        <f:facet name="first">
            <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
        </f:facet>
    </h:head>

    <composite:interface>
        <composite:attribute name="isEditable" type="java.lang.Boolean"/>
    </composite:interface>

    <composite:implementation>
        <center>
            <p:panelGrid id="formContacto" rendered="#{!cc.attrs.isEditable}" style="width: 90%" >
                <p:row>
                    <p:column>
                        <h:outputText id="lblFormularioNombre" value="NOMBRE(*): "  class="lblForm"  />
                    </p:column>
                    <p:column>
                        <p:inputText onkeyup="cambiarMayuscula(this)" id="txtFormularioNombre" maxlength="150" required="true" 
                                     value="#{BKContacto.formularioContacto.nombre}" size="50"/>
                        <p:message for="txtFormularioNombre" display="text"/>
                    </p:column>
                    <p:column>
                        <h:outputText id="lblFormularioCargo" value="CARGO(*): " class="lblForm"  />
                    </p:column>
                    <p:column>
                        <p:inputText onkeyup="cambiarMayuscula(this)" id="txtFormularioCargo" maxlength="150" required="true"
                                     value="#{BKContacto.formularioContacto.cargo}" />
                        <p:message for="txtFormularioCargo" display="text"/>
                    </p:column>
                </p:row>
                <p:row>
                    <p:column>
                        <h:outputText id="lblFormularioTelefono" value="TELEFONO: " class="lblForm"  />
                    </p:column>
                    <p:column>
                        <p:inputText onkeyup="cambiarMayuscula(this)" id="txtFormularioTelefono" maxlength="100"
                                     value="#{BKContacto.formularioContacto.telefono}" />
                    </p:column>
                    <p:column>
                        <h:outputText id="lblFormularioMovil" value="MOVIL: " class="lblForm"  />
                    </p:column>
                    <p:column>
                        <p:inputText onkeyup="cambiarMayuscula(this)" id="txtFormularioMovil" maxlength="100"
                                     value="#{BKContacto.formularioContacto.movil}" />
                    </p:column>
                </p:row>
                <p:row>
                    <p:column>
                        <h:outputText id="lblFormularioCorreo" value="CORREO: " class="lblForm"  />
                    </p:column>
                    <p:column>
                        <p:inputText onkeyup="cambiarMayuscula(this)" id="txtFormularioCorreo" size="50" maxlength="200"
                                     value="#{BKContacto.formularioContacto.correo}" >
                            <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
                        </p:inputText>
                        <p:message for="txtFormularioCorreo" display="text"/>
                        <span class="formatComment">123@server.com</span>
                    </p:column>

                    <p:column rendered="#{BKContacto.estaTipoComtacto eq true?'true':'false'}">
                        <h:outputText id="lblTipoContacto" value="TIPO CONTACTO(*) : " class="lblForm"  />
                    </p:column>
                    <p:column rendered="#{BKContacto.estaTipoComtacto eq true?'true':'false'}">
                        <p:selectOneMenu value="#{BKContacto.tipoContacto}"
                                         required="true" id="idTipoContacto">  
                            <f:selectItem itemLabel="Seleccionar" itemValue="" />  
                            <f:selectItems value="#{BKContacto.listaTipoContacto}" var="tipo" itemLabel="#{tipo.nombre}" itemValue="#{tipo.id}"/> 
                        </p:selectOneMenu>
                        <p:message for="idTipoContacto" display="text"/>
                    </p:column>
                </p:row>
                <p:row>
                    <p:column colspan="4">    
                        <p:commandButton id="btnAgregarContacto" actionListener="#{MBContacto.agregarContacto}" 
                                         ajax="true" update="dataTablaContacto,formContacto,:formulario:btnGuardar"  
                                         value="AGREGAR" process="formContacto"/>
                    </p:column>
                </p:row>
            </p:panelGrid>
        </center>

        <p:panel header="LISTA DE CONTACTO">
            <p:dataTable id="dataTablaContacto" var="contacto" value="#{BKContacto.listaContacto}" widgetVar="carsTable"
                         emptyMessage="No se encontraron contactos" rowsPerPageTemplate="5,10,15" editable="true"
                         paginator="true" rows="5" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink}
                         {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowIndexVar="rowIndex"
                         sortBy="#{contacto.nombre}" sortOrder="asc" >

                <p:ajax event="rowEdit" listener="#{MBContacto.editarContacto}" update="dataTablaContacto"/>  

                <p:column id="idColumnaNum" style="width: 5%" headerText="Num.">
                    <h:outputText value="#{rowIndex+1}" />
                </p:column>

                <p:column id="idColumnaNombre" headerText="NOMBRE" sortBy="#{contacto.nombre}" >
                    <p:cellEditor>  
                        <f:facet name="output">  
                            <h:outputText value="#{contacto.nombre}" />  
                        </f:facet>  
                        <f:facet name="input">  
                            <p:inputText onkeyup="cambiarMayuscula(this)" value="#{contacto.nombre}" style="width:100%" maxlength="150" required="true"/>  
                        </f:facet>  
                    </p:cellEditor> 
                </p:column>

                <p:column id="idColumnaCargo" headerText="CARGO" sortBy="#{contacto.cargo}" >
                    <p:cellEditor>  
                        <f:facet name="output">  
                            <h:outputText value="#{contacto.cargo}" />  
                        </f:facet>  
                        <f:facet name="input">  
                            <p:inputText onkeyup="cambiarMayuscula(this)" value="#{contacto.cargo}" style="width:100%" maxlength="150" required="true"/>  
                        </f:facet>  
                    </p:cellEditor> 
                </p:column>

                <p:column id="idColumnaTelefono" headerText="TELEFONO" sortBy="#{contacto.telefono}">
                    <p:cellEditor>  
                        <f:facet name="output">  
                            <h:outputText value="#{contacto.telefono}" />  
                        </f:facet>  
                        <f:facet name="input">  
                            <p:inputText onkeyup="cambiarMayuscula(this)" value="#{contacto.telefono}" style="width:100%" maxlength="100"/>  
                        </f:facet>  
                    </p:cellEditor> 
                </p:column>

                <p:column id="idColumnaMovil" headerText="MOVIL" sortBy="#{contacto.movil}">
                    <p:cellEditor>  
                        <f:facet name="output">  
                            <h:outputText value="#{contacto.movil}" />  
                        </f:facet>  
                        <f:facet name="input">  
                            <p:inputText onkeyup="cambiarMayuscula(this)" value="#{contacto.movil}" style="width:100%" maxlength="100"/>  
                        </f:facet>  
                    </p:cellEditor> 
                </p:column>

                <p:column id="idColumnaCorreo" headerText="CORREO" sortBy="#{contacto.correo}">
                    <p:cellEditor>  
                        <f:facet name="output">  
                            <h:outputText value="#{contacto.correo}" />  
                        </f:facet>  
                        <f:facet name="input">  
                            <p:inputText onkeyup="cambiarMayuscula(this)" value="#{contacto.correo}" style="width:100%" maxlength="200">
                                <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
                            </p:inputText> 
                        </f:facet>  
                    </p:cellEditor> 
                </p:column>
                <p:column id="idColumnaTipo" headerText="TIPO" rendered="#{BKContacto.estaTipoComtacto eq true?'true':'false'}">
                    <p:cellEditor>  
                        <f:facet name="output">  
                            <h:outputText value="#{contacto.idTipoContacto.nombre}" />  
                        </f:facet>  
                        <f:facet name="input">  
                            <p:selectOneMenu value="#{contacto.idTipoContacto.id}" required="true"  
                                             style="width:100%" id="editTipoContacto">  
                                <f:selectItem itemLabel="Seleccionar" itemValue="" />  
                                <f:selectItems value="#{BKContacto.listaTipoContacto}" var="tipoE" itemLabel="#{tipoE.nombre}" itemValue="#{tipoE.id}"/> 
                            </p:selectOneMenu>
                        </f:facet>  
                    </p:cellEditor> 
                </p:column>
                <p:column rendered="#{!cc.attrs.isEditable}">             
                    <p:commandButton id="selectButton" oncomplete="confirmacion.show()" ajax="true"
                                     icon="ui-icon-trash" process="@this" >
                        <f:setPropertyActionListener value="#{contacto}" target="#{BKContacto.currentContacto}"/>
                    </p:commandButton>
                    <p:rowEditor transient="true" />  
                </p:column>    
            </p:dataTable>   
        </p:panel>
        <p:confirmDialog id="dlgEliminarContacto" message="¿ Realmente desea eliminar este contacto ?"
                         header="Eliminar Contacto" severity="alert" widgetVar="confirmacion">
            <h:panelGrid style="width: auto;margin:0px auto;border:0px;padding: 0 5px" columns="2">      
                <p:commandButton id="btnConfEliContacto" actionListener="#{MBContacto.eliminarContacto}" update="dataTablaContacto,:formulario:btnGuardar"
                                 value="Si" oncomplete="confirmacion.hide()" immediate="true" style="text-align: center" process="@this"  />
                <p:commandButton id="btnCancEliContacto" value="No" onclick="confirmacion.hide()" type="button" style="text-align: center" />
            </h:panelGrid>
        </p:confirmDialog>    
    </composite:implementation>

</html>